package com.gy.algorithm.dailyQuestion;

/**
 * @BelongsProject: javabase
 * @BelongsPackage: com.gy.algorithm.dailyQuestion
 * @Author: gy
 * @Date: 2024/10/24 17:58
 * @Description:
 */
public class FindWinningPlayer3175 {

    public static void main(String[] args) {
        int[] exa = new int[]{19,3,6,16,10,9,2};
        System.out.println(findWinningPlayer(exa,422917785));
    }

    /***
     * @author: gy
     * @date: 我们必须拿到数组内的最大值，因为最大值才是能无限满足条件的结果，我们只能在数组长度范围内判断，如果超出了数组长度，就用数组中最大的那个值 19:08
     * @description:
     * @Param skills: 
     * @Param k:
     * @return: int
     */
    public static int findWinningPlayer(int[] skills, int k) {
        int curWinCount = 0;
        int len = skills.length;
        int i = 0;
        // todo 这里很重要 上一次值最高的玩家 - 数组中的最大值下标
        int lastMaxI = 0;

        // 遍历所有skills，判断它能否连续赢下 k 次
        while(i < len){
            int j = i + 1;

            // while循环中 过滤符合条件的值
            while (j < len && skills[j] < skills[i] && curWinCount < k){
                j++;
                curWinCount++;
            }

            if(curWinCount == k){
                return i;
            }

            curWinCount = 1;
            lastMaxI = i;
            i = j;
        }

        return lastMaxI;
    }

}
